A particularly compute-intensive activity, employing large arrays of computers, is the performance of searches of the World Wide Web (the “Web”). Google and other companies implement “search engines,” which sort through interconnected web sites and their underlying content from Internet-connected sources all over the world. Within fractions of a second of receiving a search request, a search engine typically returns to the requesting client a listing of applicable sites and textual references. Search engines exploit the massive parallelism of their search algorithms, dividing up web pages amongst their servers such that each server is responsible for searching only a tiny fraction of the Internet.
It is often desirable for processes of a parallel computing task, such as search, to share a single memory address space. However, it would highly inefficient for thousands of separate processors to access a single unified physical memory bank.
What is needed is a system that provides parallel processing with a single virtual memory address space, but the ability to make efficient use of memory local to each processor when possible.